package main

import (
	"fmt"
	log "github.com/sirupsen/logrus"
	"os"
)

func init() {
	//设置日志输出格式 json格式打印 还可以用Text文本形式打印,且文本打印还可以指定输出颜色
	//log.SetFormatter(&log.JSONFormatter{})
	log.SetFormatter(&log.TextFormatter{
		ForceColors:     true,                  //开启控制台输出带颜色的日志 方便区分
		FullTimestamp:   true,                  //开启时间
		TimestampFormat: "2006-01-02 15:04:05", //设置时间格式 切记是golang的问世时间,2006-01-02 15:04:05
	})
	//日志输出至控制台
	log.SetOutput(os.Stdout)
	/*
		设置日志级别  PanicLevel、FatalLevel(这里会有一个退出 慎用)、ErrorLevel、WarnLevel、InfoLevel、DebugLevel、TraceLevel (按日志等级排序）
		如果此处设置的WarnLevel级别，因此这个级别后的其他日志不会被打印，只会打印这个日志登基以及之前的日志
	*/
	log.SetLevel(log.InfoLevel)
	//打印日志级别
	fmt.Println(log.GetLevel())
}

func main() {
	log.Println("正常打印")
	log.Panicln("打印异常日志")
	log.Fatalln("打印Fatalln日志")
	log.Error("打印错误日志")
	log.Warnln("打印警告日志")
	log.Info("打印正常日志")
	log.Debug("打印调试日志")
	/*
		设置日志特定字段 这个日志在最后打印时，日志内容中将包含这个添加的字段
			设置一个日志特定字段的方式
				log.WithField("key","value")
			设置多个日志特定字段的方式
				log.WithFields(log.Fields{  //Fields是一个map[string]interface{}类型
			"key1": "value1",
			"key2": "value2",
		})
	*/
	logGateway := log.WithField("网关服务", "gateway")
	logGateway.Info("这是网关info日志")
	logNacos := log.WithFields(log.Fields{ //Fields是一个map[string]interface{}类型
		"MiddleName":  "nacos",
		"ServiceName": "payservice",
	})
	logNacos.Error("nacos中注册的payservice服务的错误日志")
}
